我們今天來到了第九天,今天來講講我們需要使用甚麼函式才可以將DLL注入到別的程式裡面,廢話不多說我們直接開始。
今天我們主要使用到的函數有LoadLibrary CreateRemoteThread VirtualAllocEx()
這是加載DLL的函數使用,透過LoadLibrary獲取句柄,如要卸載的話則是使用FreeLibraryHMODULE hmodule=LoadLibrary("DLL名子.dll")
創建一個虛擬地址空間中運行的線程CreateRemoteThread(句柄,NULL,0,指向開始地址的指標,要傳給線程函數變量的指針,控制線程的標誌,指向接受線程標示符的指針)
在控制線程創建的標誌中有三個預設的值分別是
0
線程在創建後立即運行
CREATE_SUSPENDED
線程以掛起狀態創建,並且直到調用ResumeThread函數後才運行
STACK_SIZE_PARAM_IS_A_RESERVATION
所述dwStackSize參數指定堆棧的初始保留大小
恩這邊看完基本上都是使用0立即運行
這是在指定進程的虛擬地址保留空間,簡單說就是在進程的地址空間中分配內存。VirtualAllocEx(句柄,NULL,路徑,內存分配的類型,內存保護常量)
在這部分就有點複雜了因為內存分配的類型和內存保護常量都是官方定義的東西,所以這邊就不解釋了,因為有針對讀寫或是只讀等等類型的形式。
今天的東西可能比較複雜,初步解釋需要使用甚麼函式才可以將DLL注入到別的程式裡面,最近好忙一天的時間都不夠用,還是老話一句打完有點累趕緊洗洗睡,我們明天再見。